package com.qingniao.hb.utitls;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

/**
 * druid连接池的工具类，在这里读取配置文件中的数据库连接参数，创建连接池对象
 * @author xlzhang
 * @date 2023/3/27 11:09
 */
public class DruidUtils {

    private DruidUtils(){}

    // 创建一个变量，记录连接池对象
    private static DataSource dataSource;

    static {
        try {
            // 创建一个属性集，保存数据库连接池连接参数
            final Properties prop = new Properties();
            // 使用类加载器，去运行时空间的类路径下读取配置文件
            final InputStream in = DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            prop.load(in);
            // 将已经保存了数据的集合赋值给druid连接池工厂类
            dataSource = DruidDataSourceFactory.createDataSource(prop);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 数据源的getter方法
     * @return
     */
    public static DataSource getDataSource(){
        return dataSource;
    }

    /**
     * 当前开发环境下，是使用连接对象
     */
    // 提供一个连接对象
    public static Connection getConnection(){
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            //e.printStackTrace();
            //return null;
            // 将编译时异常转换为运行时异常
            throw new RuntimeException(e);
        }
    }
}
